package 字符串;

/**
 * @author: 大怪
 * @email: 962527441@qq.com
 */

import java.util.Arrays;

/**
 * 题目：
 * 给定两个字符串 s1 和 s2，写一个函数来判断 s2 是否包含 s1 的某个变位词。
 * 换句话说，第一个字符串的排列之一是第二个字符串的 子串 。
 *
 * 示例 1：
 *
 * 输入: s1 = "ab" s2 = "eidbaooo"
 * 输出: True
 * 解释: s2 包含 s1 的排列之一 ("ba").
 */
public class 字符串中的变位词 {
    class Solution {
        public boolean checkInclusion(String s1, String s2) {
            if (s1.length()>s2.length()) {
                return false;
            }
            int[] arr1 = new int[26];
            int[] arr2 = new int[26];
            for (int i = 0; i < s1.length(); i++) {
                arr1[s1.charAt(i)-'a']++;
                arr2[s2.charAt(i)-'a']++;
            }
            for (int i = s1.length(); i < s2.length(); i++) {
                if(Arrays.equals(arr1, arr2)) {
                    return true;
                }
                arr2[s2.charAt(i-s1.length())-'a']--;
                arr2[s2.charAt(i)-'a']++;
            }

            return Arrays.equals(arr1, arr2);
        }
    }
}
